<!DOCTYPE html><html class="transition bg-[var(--page-bg)] md:text-[16px] text-[14px]" data-astro-cid-sckkx6r4 data-overlayscrollbars-initialize lang=zh-CN style=--bannerOffset:15vh;--banner-height-home:65vh;--banner-height:35vh;--configHue:250;--page-width:75rem><head><title>Lorenzo Feng - Blog Site</title><meta charset=UTF-8><meta content="Lorenzo Feng - Blog Site" name=description><meta content="Lorenzo Feng" name=author><meta content="Lorenzo Feng" property=og:site_name><meta content=https://lorenzofeng.top/ property=og:url><meta content="Lorenzo Feng - Blog Site" property=og:title><meta content=https://7emotions.atomgit.net/blog/demo-banner.png itemprop=image><meta content=https://7emotions.atomgit.net/blog/demo-banner.png property=og:image><meta content="Lorenzo Feng - Blog Site" property=og:description><meta content=website property=og:type><meta content=summary_large_image name=twitter:card><meta content=https://lorenzofeng.top/ property=twitter:url><meta content="Lorenzo Feng - Blog Site" name=twitter:title><meta content="Lorenzo Feng - Blog Site" name=twitter:description><meta content="width=device-width" name=viewport><meta content="Astro v5.1.6" name=generator><link href=/favicon/favicon-32x32-dark.png rel=icon><script>!function(){switch(localStorage.getItem("theme")||"auto"){case"light":document.documentElement.classList.remove("dark");break;case"dark":document.documentElement.classList.add("dark");break;case"auto":window.matchMedia("(prefers-color-scheme: dark)").matches?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")}const e=localStorage.getItem("hue")||250;document.documentElement.style.setProperty("--hue",e);let t=Math.floor(.3*window.innerHeight);t-=t%4,document.documentElement.style.setProperty("--banner-height-extend",`${t}px`)}()</script><link href=https://lorenzofeng.top/rss.xml rel=alternate title="Lorenzo Feng" type=application/rss+xml><link href=/_astro/Layout.DSulWsr7.css rel=stylesheet><link href=/_astro/Layout.BGTS0f8r.css rel=stylesheet><link href=/_astro/_page_.DcR-dn-h.css rel=stylesheet><link href=/_astro/_page_.DpIcdzgv.css rel=stylesheet><link href=/_astro/about.CrjVxwwl.css rel=stylesheet><style>input.svelte-1gu5h8y:focus{outline:0}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex){-webkit-appearance:none;height:1.5rem;background-image:var(--color-selection-bar);transition:background-image .15s ease-in-out}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-webkit-slider-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;background:#ffffffb3;box-shadow:none}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-webkit-slider-thumb:hover{background:#fffc}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-webkit-slider-thumb:active{background:#fff9}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-moz-range-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;border-width:0;background:#ffffffb3;box-shadow:none}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-moz-range-thumb:hover{background:#fffc}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-moz-range-thumb:active{background:#fff9}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-ms-thumb{-webkit-appearance:none;height:1rem;width:.5rem;border-radius:.125rem;background:#ffffffb3;box-shadow:none}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-ms-thumb:hover{background:#fffc}#display-setting.svelte-1s19bex input[type=range]:where(.svelte-1s19bex)::-ms-thumb:active{background:#fff9}</style><script type=module src=/_astro/page.DG34Aup6.js></script></head><body class="transition enable-banner lg:is-home min-h-screen" data-astro-cid-sckkx6r4 data-overlayscrollbars-initialize style=--bannerOffset:15vh;--banner-height-home:65vh;--banner-height:35vh;--configHue:250;--page-width:75rem><img src=https://7emotions.atomgit.net/blog/demo-banner.png style=height:0;width:0;overflow:hidden;display:block;--bannerOffset:15vh;--banner-height-home:65vh;--banner-height:35vh;--configHue:250;--page-width:75rem data-astro-cid-sckkx6r4><div data-hue=250 id=config-carrier></div><div class="relative mx-auto max-w-[var(--page-width)] duration-700 md:px-4 pointer-events-none px-0 transition-all z-50" id=top-row><div class="pointer-events-auto sticky top-0 transition-all" id=navbar-wrapper><div class="z-50 onload-animation" id=navbar><div class="transition absolute -top-8 bg-[var(--card-bg)] h-8 left-0 right-0"></div><div class="flex items-center justify-between !overflow-visible !rounded-t-none card-base h-[4.5rem] max-w-[var(--page-width)] mx-auto px-4"><a href=/ class="btn-plain rounded-lg scale-animation active:scale-95 font-bold px-5 h-[3.25rem]"><div class="flex items-center flex-row text-[var(--primary)] text-md"><svg class="text-[1.75rem] mb-1 mr-2" data-icon=material-symbols:home-outline-rounded height=1em width=1em><symbol id=ai:material-symbols:home-outline-rounded viewBox="0 0 24 24"><path d="M6 19h3v-5q0-.425.288-.712T10 13h4q.425 0 .713.288T15 14v5h3v-9l-6-4.5L6 10zm-2 0v-9q0-.475.213-.9t.587-.7l6-4.5q.525-.4 1.2-.4t1.2.4l6 4.5q.375.275.588.7T20 10v9q0 .825-.588 1.413T18 21h-4q-.425 0-.712-.288T13 20v-5h-2v5q0 .425-.288.713T10 21H6q-.825 0-1.412-.587T4 19m8-6.75" fill=currentColor /></symbol><use href=#ai:material-symbols:home-outline-rounded></use></svg> Lorenzo Feng</div></a><div class="md:flex hidden"><a href=/ class="btn-plain rounded-lg scale-animation active:scale-95 font-bold px-5 h-11" aria-label=主页><div class="flex items-center">测试主页</div></a><a href=/archive/ class="btn-plain rounded-lg scale-animation active:scale-95 font-bold px-5 h-11" aria-label=归档><div class="flex items-center">归档</div></a><a href=/about/ class="btn-plain rounded-lg scale-animation active:scale-95 font-bold px-5 h-11" aria-label=关于><div class="flex items-center">关于</div></a><a href=/friends/ class="btn-plain rounded-lg scale-animation active:scale-95 font-bold px-5 h-11" aria-label=友链><div class="flex items-center">友链</div></a><a href=https://github.com/7emotions/astro-blog/ class="btn-plain rounded-lg scale-animation active:scale-95 font-bold px-5 h-11" aria-label=GitHub target=_blank><div class="flex items-center">GitHub <svg class="transition -translate-y-[1px] dark:text-white/[0.2] ml-1 text-[0.875rem] text-black/[0.2]" data-icon=fa6-solid:arrow-up-right-from-square height=1em width=1em><symbol id=ai:fa6-solid:arrow-up-right-from-square viewBox="0 0 512 512"><path d="M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32zM80 32C35.8 32 0 67.8 0 112v320c0 44.2 35.8 80 80 80h320c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32v112c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16h112c17.7 0 32-14.3 32-32s-14.3-32-32-32z" fill=currentColor /></symbol><use href=#ai:fa6-solid:arrow-up-right-from-square></use></svg></div></a></div><div class=flex><style>astro-island,astro-slot,astro-static-slot{display:contents}</style><script>(self.Astro||(self.Astro={})).only=async t=>{await(await t())()},window.dispatchEvent(new Event("astro:only")),(()=>{var t=Object.defineProperty,e=(e,r,n)=>((e,r,n)=>r in e?t(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n)(e,"symbol"!=typeof r?r+"":r,n);{let t={0:t=>s(t),1:t=>n(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(n(t)),5:t=>new Set(n(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},r=e=>{let[r,n]=e;return r in t?t[r](n):void 0},n=t=>t.map(r),s=t=>"object"!=typeof t||null===t?t:Object.fromEntries(Object.entries(t).map((([t,e])=>[t,r(e)])));class i extends HTMLElement{constructor(){super(...arguments),e(this,"Component"),e(this,"hydrator"),e(this,"hydrate",(async()=>{var t;if(!this.hydrator||!this.isConnected)return;let e=null==(t=this.parentElement)?void 0:t.closest("astro-island[ssr]");if(e)return void e.addEventListener("astro:hydrate",this.hydrate,{once:!0});let r,n=this.querySelectorAll("astro-slot"),i={},o=this.querySelectorAll("template[data-astro-template]");for(let t of o){let e=t.closest(this.tagName);null!=e&&e.isSameNode(this)&&(i[t.getAttribute("data-astro-template")||"default"]=t.innerHTML,t.remove())}for(let t of n){let e=t.closest(this.tagName);null!=e&&e.isSameNode(this)&&(i[t.getAttribute("name")||"default"]=t.innerHTML)}try{r=this.hasAttribute("props")?s(JSON.parse(this.getAttribute("props"))):{}}catch(t){let e=this.getAttribute("component-url")||"<unknown>",r=this.getAttribute("component-export");throw r&&(e+=` (export ${r})`),console.error(`[hydrate] Error parsing props for component ${e}`,this.getAttribute("props"),t),t}await this.hydrator(this)(this.Component,r,i,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))})),e(this,"unmount",(()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))}))}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(this.hasAttribute("await-children")&&"interactive"!==document.readyState&&"complete"!==document.readyState){let t=()=>{document.removeEventListener("DOMContentLoaded",t),e.disconnect(),this.childrenConnectedCallback()},e=new MutationObserver((()=>{var e;(null==(e=this.lastChild)?void 0:e.nodeType)===Node.COMMENT_NODE&&"astro:end"===this.lastChild.nodeValue&&(this.lastChild.remove(),t())}));e.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",t)}else this.childrenConnectedCallback()}async childrenConnectedCallback(){let t=this.getAttribute("before-hydration-url");t&&await import(t),this.start()}async start(){let t=JSON.parse(this.getAttribute("opts")),e=this.getAttribute("client");if(void 0!==Astro[e])try{await Astro[e]((async()=>{let t=this.getAttribute("renderer-url"),[e,{default:r}]=await Promise.all([import(this.getAttribute("component-url")),t?import(t):()=>()=>{}]),n=this.getAttribute("component-export")||"default";if(n.includes(".")){this.Component=e;for(let t of n.split("."))this.Component=this.Component[t]}else this.Component=e[n];return this.hydrator=r,this.hydrate}),t,this)}catch(t){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,t)}else window.addEventListener(`astro:${e}`,(()=>this.start()),{once:!0})}attributeChangedCallback(){this.hydrate()}}e(i,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",i)}})()</script><astro-island client=only component-export=default component-url=/_astro/Search.10v8GF6Y.js opts={&quot;name&quot;:&quot;Search&quot;,&quot;value&quot;:&quot;svelte&quot;} props={} renderer-url=/_astro/client.svelte.CHuJF3Sl.js ssr uid=rycj7></astro-island><button class="btn-plain rounded-lg scale-animation h-11 active:scale-90 w-11" aria-label="Display Settings" id=display-settings-switch><svg class=text-[1.25rem] data-icon=material-symbols:palette-outline height=1em width=1em><symbol id=ai:material-symbols:palette-outline viewBox="0 0 24 24"><path d="M12 22q-2.05 0-3.875-.788t-3.187-2.15t-2.15-3.187T2 12q0-2.075.813-3.9t2.2-3.175T8.25 2.788T12.2 2q2 0 3.775.688t3.113 1.9t2.125 2.875T22 11.05q0 2.875-1.75 4.413T16 17h-1.85q-.225 0-.312.125t-.088.275q0 .3.375.863t.375 1.287q0 1.25-.687 1.85T12 22m-5.5-9q.65 0 1.075-.425T8 11.5t-.425-1.075T6.5 10t-1.075.425T5 11.5t.425 1.075T6.5 13m3-4q.65 0 1.075-.425T11 7.5t-.425-1.075T9.5 6t-1.075.425T8 7.5t.425 1.075T9.5 9m5 0q.65 0 1.075-.425T16 7.5t-.425-1.075T14.5 6t-1.075.425T13 7.5t.425 1.075T14.5 9m3 4q.65 0 1.075-.425T19 11.5t-.425-1.075T17.5 10t-1.075.425T16 11.5t.425 1.075T17.5 13M12 20q.225 0 .363-.125t.137-.325q0-.35-.375-.825T11.75 17.3q0-1.05.725-1.675T14.25 15H16q1.65 0 2.825-.962T20 11.05q0-3.025-2.312-5.038T12.2 4Q8.8 4 6.4 6.325T4 12q0 3.325 2.338 5.663T12 20" fill=currentColor /></symbol><use href=#ai:material-symbols:palette-outline></use></svg></button><script>(self.Astro||(self.Astro={})).load=async a=>{await(await a())()},window.dispatchEvent(new Event("astro:load"))</script><astro-island client=load component-export=default component-url=/_astro/LightDarkSwitch.CZy__Dkr.js opts={&quot;name&quot;:&quot;LightDarkSwitch&quot;,&quot;value&quot;:true} props={} renderer-url=/_astro/client.svelte.CHuJF3Sl.js ssr uid=1zq7n await-children><!--[--><div class="relative z-50" role=menu tabindex=-1><button class="relative active:scale-90 btn-plain h-11 rounded-lg scale-animation w-11" aria-label="Light/Dark Mode" id=scheme-switch role=menuitem><div class="absolute opacity-0"><!--[!--><!--]--></div><div class="absolute opacity-0"><!--[!--><!--]--></div><div class=absolute><!--[!--><!--]--></div></button><div class="transition absolute hidden lg:block -right-2 float-panel-closed pt-5 top-11" id=light-dark-panel><div class="p-2 card-base float-panel"><button class="transition font-medium whitespace-nowrap !justify-start active:scale-95 btn-plain flex h-9 items-center px-3 rounded-lg scale-animation w-full mb-0.5"><!--[!--><!--]-->亮色</button> <button class="transition font-medium whitespace-nowrap !justify-start active:scale-95 btn-plain flex h-9 items-center px-3 rounded-lg scale-animation w-full mb-0.5"><!--[!--><!--]-->暗色</button> <button class="transition font-medium whitespace-nowrap !justify-start active:scale-95 btn-plain flex h-9 items-center px-3 rounded-lg scale-animation w-full current-theme-btn"><!--[!--><!--]-->跟随系统</button></div></div></div><!--]--><!--astro:end--></astro-island><button class="btn-plain rounded-lg scale-animation h-11 active:scale-90 w-11 md:!hidden" aria-label=Menu id=nav-menu-switch name="Nav Menu"><svg class=text-[1.25rem] data-icon=material-symbols:menu-rounded height=1em width=1em><symbol id=ai:material-symbols:menu-rounded viewBox="0 0 24 24"><path d="M4 18q-.425 0-.712-.288T3 17t.288-.712T4 16h16q.425 0 .713.288T21 17t-.288.713T20 18zm0-5q-.425 0-.712-.288T3 12t.288-.712T4 11h16q.425 0 .713.288T21 12t-.288.713T20 13zm0-5q-.425 0-.712-.288T3 7t.288-.712T4 6h16q.425 0 .713.288T21 7t-.288.713T20 8z" fill=currentColor /></symbol><use href=#ai:material-symbols:menu-rounded></use></svg></button></div><div class="absolute float-panel-closed fixed float-panel px-2 py-2 right-4 transition-all" id=nav-menu-panel><a href=/ class="transition flex items-center rounded-lg active:bg-[var(--btn-plain-bg-active)] gap-8 group hover:bg-[var(--btn-plain-bg-hover)] justify-between pl-3 pr-1 py-2"><div class="transition font-bold dark:text-white/75 group-active:text-[var(--primary)] group-hover:text-[var(--primary)] text-black/75">主页</div><svg class="transition text-[var(--primary)] text-[1.25rem]" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:chevron-right-rounded></use></svg> </a><a href=/archive/ class="transition flex items-center rounded-lg active:bg-[var(--btn-plain-bg-active)] gap-8 group hover:bg-[var(--btn-plain-bg-hover)] justify-between pl-3 pr-1 py-2"><div class="transition font-bold dark:text-white/75 group-active:text-[var(--primary)] group-hover:text-[var(--primary)] text-black/75">归档</div><svg class="transition text-[var(--primary)] text-[1.25rem]" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:chevron-right-rounded></use></svg> </a><a href=/about/ class="transition flex items-center rounded-lg active:bg-[var(--btn-plain-bg-active)] gap-8 group hover:bg-[var(--btn-plain-bg-hover)] justify-between pl-3 pr-1 py-2"><div class="transition font-bold dark:text-white/75 group-active:text-[var(--primary)] group-hover:text-[var(--primary)] text-black/75">关于</div><svg class="transition text-[var(--primary)] text-[1.25rem]" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:chevron-right-rounded></use></svg> </a><a href=/friends/ class="transition flex items-center rounded-lg active:bg-[var(--btn-plain-bg-active)] gap-8 group hover:bg-[var(--btn-plain-bg-hover)] justify-between pl-3 pr-1 py-2"><div class="transition font-bold dark:text-white/75 group-active:text-[var(--primary)] group-hover:text-[var(--primary)] text-black/75">友链</div><svg class="transition text-[var(--primary)] text-[1.25rem]" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:chevron-right-rounded></use></svg> </a><a href=https://github.com/7emotions/astro-blog/ class="transition flex items-center rounded-lg active:bg-[var(--btn-plain-bg-active)] gap-8 group hover:bg-[var(--btn-plain-bg-hover)] justify-between pl-3 pr-1 py-2" target=_blank><div class="transition font-bold dark:text-white/75 group-active:text-[var(--primary)] group-hover:text-[var(--primary)] text-black/75">GitHub</div><svg class="transition dark:text-white/25 -translate-x-1 text-[0.75rem] text-black/25" data-icon=fa6-solid:arrow-up-right-from-square height=1em width=1em viewBox="0 0 512 512"><use href=#ai:fa6-solid:arrow-up-right-from-square></use></svg></a></div><astro-island client=only component-export=default component-url=/_astro/DisplaySettings.6G8hq67Q.js opts={&quot;name&quot;:&quot;DisplaySettings&quot;,&quot;value&quot;:&quot;svelte&quot;} props={} renderer-url=/_astro/client.svelte.CHuJF3Sl.js ssr uid=ZysWWl></astro-island></div></div><script type=module>function c(){"dark"===localStorage.theme?(document.documentElement.classList.remove("dark"),localStorage.theme="light"):(document.documentElement.classList.add("dark"),localStorage.theme="dark")}function i(){let e=document.getElementById("scheme-switch");e&&e.addEventListener("click",(function(){c()}));let t=document.getElementById("display-settings-switch");t&&t.addEventListener("click",(function(){let e=document.getElementById("display-setting");e&&e.classList.toggle("float-panel-closed")}));let n=document.getElementById("nav-menu-switch");n&&n.addEventListener("click",(function(){let e=document.getElementById("nav-menu-panel");e&&e.classList.toggle("float-panel-closed")}))}i()</script><script>!async function(){const i=await import("/pagefind/pagefind.js");await i.options({excerptLength:20}),i.init(),window.pagefind=i,i.search("")}()</script></div></div><div class="transition absolute w-full z-10 duration-700 overflow-hidden" style=top:-30vh id=banner-wrapper><div class="transition duration-700 overflow-hidden h-full object-cover opacity-0 relative scale-105" id=banner><div class="transition absolute pointer-events-none bg-opacity-50 dark:bg-black/10 inset-0"></div><img src=/demo-banner.png style=object-position:center alt="Banner image of the blog" class="w-full h-full object-cover"></div></div><div class="w-full absolute pointer-events-none z-30" style="top:calc(35vh - 3.5rem)"><div class="relative mx-auto max-w-[var(--page-width)] pointer-events-auto"><div class="transition mx-auto duration-700 gap-4 grid grid-cols-[17.5rem_auto] grid-rows-[auto_1fr_auto] left-0 lg:grid-rows-[auto] md:px-4 px-0 right-0 w-full" id=main-grid><div class="w-full onload-animation col-span-2 lg:col-span-1 lg:max-w-[17.5rem] lg:row-end-2 lg:row-start-1 mb-4 row-end-3 row-start-2" id=sidebar><div class="flex gap-4 mb-4 flex-col w-full"><div class="p-3 card-base"><a href=/about/ class="relative overflow-hidden active:scale-95 group rounded-xl block lg:max-w-none lg:mt-0 lg:mx-0 max-w-[12rem] mb-3 mt-1 mx-auto" aria-label="Go to About Page"><div class="transition flex items-center justify-center absolute group-active:bg-black/50 group-hover:bg-black/30 h-full pointer-events-none w-full z-50"><svg class="transition group-hover:scale-100 group-hover:opacity-100 opacity-0 text-5xl text-white scale-90" data-icon=fa6-regular:address-card height=1em width=1.13em><symbol id=ai:fa6-regular:address-card viewBox="0 0 576 512"><path d="M512 80c8.8 0 16 7.2 16 16v320c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V96c0-8.8 7.2-16 16-16zM64 32C28.7 32 0 60.7 0 96v320c0 35.3 28.7 64 64 64h448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64zm144 224a64 64 0 1 0 0-128a64 64 0 1 0 0 128m-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80zm200-144c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24h80c13.3 0 24-10.7 24-24s-10.7-24-24-24z" fill=currentColor /></symbol><use href=#ai:fa6-regular:address-card></use></svg></div><div class="relative overflow-hidden h-full lg:mt-0 lg:w-full mx-auto"><div class="transition absolute pointer-events-none bg-opacity-50 dark:bg-black/10 inset-0"></div><img src=/_astro/demo-avatar.D-BY1j2__O66VK.webp style=object-position:center alt="Profile Image of the Author" class="w-full h-full object-cover" decoding=async height=640 loading=lazy width=640></div></a><div class=px-2><div class="transition font-bold dark:text-neutral-50 mb-1 text-center text-xl">Lorenzo Feng</div><div class="transition mx-auto bg-[var(--primary)] h-1 mb-2 rounded-full w-5"></div><div class="transition text-center mb-2.5 text-neutral-400">An algorithm engineer of Alliance, NJUST</div><div class="flex gap-2 justify-center mb-1"><a href=https://t.me/lorenzofeng class="btn-regular rounded-lg active:scale-90 h-10 w-10" aria-label=Telegram target=_blank rel=me><svg class=text-[1.5rem] data-icon=logos:telegram height=1em width=1em><symbol id=ai:logos:telegram viewBox="0 0 256 256"><defs><linearGradient id=logosTelegram0 x1=50% x2=50% y1=0% y2=100%><stop offset=0% stop-color=#2AABEE /><stop offset=100% stop-color=#229ED9 /></linearGradient></defs><path d="M128 0C94.06 0 61.48 13.494 37.5 37.49A128.04 128.04 0 0 0 0 128c0 33.934 13.5 66.514 37.5 90.51C61.48 242.506 94.06 256 128 256s66.52-13.494 90.5-37.49c24-23.996 37.5-56.576 37.5-90.51s-13.5-66.514-37.5-90.51C194.52 13.494 161.94 0 128 0" fill=url(#logosTelegram0) /><path d="M57.94 126.648q55.98-24.384 74.64-32.152c35.56-14.786 42.94-17.354 47.76-17.441c1.06-.017 3.42.245 4.96 1.49c1.28 1.05 1.64 2.47 1.82 3.467c.16.996.38 3.266.2 5.038c-1.92 20.24-10.26 69.356-14.5 92.026c-1.78 9.592-5.32 12.808-8.74 13.122c-7.44.684-13.08-4.912-20.28-9.63c-11.26-7.386-17.62-11.982-28.56-19.188c-12.64-8.328-4.44-12.906 2.76-20.386c1.88-1.958 34.64-31.748 35.26-34.45c.08-.338.16-1.598-.6-2.262c-.74-.666-1.84-.438-2.64-.258c-1.14.256-19.12 12.152-54 35.686c-5.1 3.508-9.72 5.218-13.88 5.128c-4.56-.098-13.36-2.584-19.9-4.708c-8-2.606-14.38-3.984-13.82-8.41c.28-2.304 3.46-4.662 9.52-7.072" fill=#FFF /></symbol><use href=#ai:logos:telegram></use></svg> </a><a href=https://qm.qq.com/q/gszht217Fu class="btn-regular rounded-lg active:scale-90 h-10 w-10" aria-label=QQ target=_blank rel=me><svg class=text-[1.5rem] data-icon=mdi:qqchat height=1em width=1em><symbol id=ai:mdi:qqchat viewBox="0 0 24 24"><path d="M3.18 13.54c.58-1.38 1.39-2.4 1.99-2.62c-.01-.8.14-1.3.39-1.7c0-.03-.06-.36.16-.77C5.87 4.85 8.21 2 12 2s6.13 2.85 6.28 6.45c.22.41.16.74.16.77c.25.4.4.9.39 1.7c.6.22 1.41 1.24 1.99 2.63c.75 1.76.87 3.45.27 3.75c-.41.2-1.06-.3-1.67-1.18c-.24.98-.84 1.88-1.69 2.59c.9.33 1.48.87 1.48 1.48c0 1-1.58 1.81-3.52 1.81c-1.76 0-3.19-.66-3.48-1.5h-.42c-.29.84-1.72 1.5-3.48 1.5c-1.94 0-3.52-.81-3.52-1.81c0-.61.58-1.15 1.48-1.48c-.85-.71-1.45-1.61-1.69-2.59c-.61.88-1.26 1.38-1.67 1.18c-.6-.3-.48-1.99.27-3.76" fill=currentColor /></symbol><use href=#ai:mdi:qqchat></use></svg> </a><a href=https://github.com/7emotions class="btn-regular rounded-lg active:scale-90 h-10 w-10" aria-label=GitHub target=_blank rel=me><svg class=text-[1.5rem] data-icon=fa6-brands:github height=1em width=0.97em><symbol id=ai:fa6-brands:github viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2" fill=currentColor /></symbol><use href=#ai:fa6-brands:github></use></svg></a></div></div></div></div><div class="flex gap-4 flex-col top-4 top-4 duration-700 sticky transition-all w-full" id=sidebar-sticky><widget-layout class="pb-4 card-base onload-animation" data-astro-cid-ucso7hve=true data-id=categories data-is-collapsed=true style=animation-delay:150ms;--collapsedHeight:7.5rem><div class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 before:h-4 before:left-[-16px] before:top-[5.5px] dark:text-neutral-100 mb-2 ml-8 mt-4 relative text-lg text-neutral-900" style=--collapsedHeight:7.5rem data-astro-cid-ucso7hve>分类</div><div class="px-4 collapse-wrapper overflow-hidden collapsed" style=--collapsedHeight:7.5rem data-astro-cid-ucso7hve id=categories><a href=/archive/category/Examples/ aria-label="View all posts in the Examples category"><button class="w-full dark:hover:text-[var(--primary)] hover:text-[var(--primary)] active:bg-[var(--btn-plain-bg-active)] bg-none dark:text-neutral-300 h-10 hover:bg-[var(--btn-plain-bg-hover)] hover:pl-3 pl-2 rounded-lg text-neutral-700 transition-all"><div class="flex items-center justify-between mr-2 relative"><div class="overflow-ellipsis overflow-hidden text-left whitespace-nowrap">Examples</div><div class="transition text-sm flex bg-[oklch(0.95_0.025_var(--hue))] dark:bg-[var(--primary)] dark:text-[var(--deep-text)] font-bold h-7 items-center justify-center min-w-[2rem] ml-4 px-2 rounded-lg text-[var(--btn-content)]">3</div></div></button> </a><a href=/archive/category/Guides/ aria-label="View all posts in the Guides category"><button class="w-full dark:hover:text-[var(--primary)] hover:text-[var(--primary)] active:bg-[var(--btn-plain-bg-active)] bg-none dark:text-neutral-300 h-10 hover:bg-[var(--btn-plain-bg-hover)] hover:pl-3 pl-2 rounded-lg text-neutral-700 transition-all"><div class="flex items-center justify-between mr-2 relative"><div class="overflow-ellipsis overflow-hidden text-left whitespace-nowrap">Guides</div><div class="transition text-sm flex bg-[oklch(0.95_0.025_var(--hue))] dark:bg-[var(--primary)] dark:text-[var(--deep-text)] font-bold h-7 items-center justify-center min-w-[2rem] ml-4 px-2 rounded-lg text-[var(--btn-content)]">1</div></div></button> </a><a href=/archive/category/hello-world/ aria-label="View all posts in the hello-world category"><button class="w-full dark:hover:text-[var(--primary)] hover:text-[var(--primary)] active:bg-[var(--btn-plain-bg-active)] bg-none dark:text-neutral-300 h-10 hover:bg-[var(--btn-plain-bg-hover)] hover:pl-3 pl-2 rounded-lg text-neutral-700 transition-all"><div class="flex items-center justify-between mr-2 relative"><div class="overflow-ellipsis overflow-hidden text-left whitespace-nowrap">hello-world</div><div class="transition text-sm flex bg-[oklch(0.95_0.025_var(--hue))] dark:bg-[var(--primary)] dark:text-[var(--deep-text)] font-bold h-7 items-center justify-center min-w-[2rem] ml-4 px-2 rounded-lg text-[var(--btn-content)]">1</div></div></button> </a><a href=/archive/category/人工智能/ aria-label="View all posts in the 人工智能 category"><button class="w-full dark:hover:text-[var(--primary)] hover:text-[var(--primary)] active:bg-[var(--btn-plain-bg-active)] bg-none dark:text-neutral-300 h-10 hover:bg-[var(--btn-plain-bg-hover)] hover:pl-3 pl-2 rounded-lg text-neutral-700 transition-all"><div class="flex items-center justify-between mr-2 relative"><div class="overflow-ellipsis overflow-hidden text-left whitespace-nowrap">人工智能</div><div class="transition text-sm flex bg-[oklch(0.95_0.025_var(--hue))] dark:bg-[var(--primary)] dark:text-[var(--deep-text)] font-bold h-7 items-center justify-center min-w-[2rem] ml-4 px-2 rounded-lg text-[var(--btn-content)]">1</div></div></button> </a><a href=/archive/category/建站/ aria-label="View all posts in the 建站 category"><button class="w-full dark:hover:text-[var(--primary)] hover:text-[var(--primary)] active:bg-[var(--btn-plain-bg-active)] bg-none dark:text-neutral-300 h-10 hover:bg-[var(--btn-plain-bg-hover)] hover:pl-3 pl-2 rounded-lg text-neutral-700 transition-all"><div class="flex items-center justify-between mr-2 relative"><div class="overflow-ellipsis overflow-hidden text-left whitespace-nowrap">建站</div><div class="transition text-sm flex bg-[oklch(0.95_0.025_var(--hue))] dark:bg-[var(--primary)] dark:text-[var(--deep-text)] font-bold h-7 items-center justify-center min-w-[2rem] ml-4 px-2 rounded-lg text-[var(--btn-content)]">3</div></div></button></a></div><div class="-mb-2 expand-btn px-4" style=--collapsedHeight:7.5rem data-astro-cid-ucso7hve><button class="w-full rounded-lg btn-plain h-9" data-astro-cid-ucso7hve style=--collapsedHeight:7.5rem><div class="flex items-center justify-center -translate-x-2 gap-2 text-[var(--primary)]" style=--collapsedHeight:7.5rem data-astro-cid-ucso7hve><svg class=text-[1.75rem] data-icon=material-symbols:more-horiz height=1em width=1em data-astro-cid-ucso7hve=true><symbol id=ai:material-symbols:more-horiz viewBox="0 0 24 24"><path d="M6 14q-.825 0-1.412-.587T4 12t.588-1.412T6 10t1.413.588T8 12t-.587 1.413T6 14m6 0q-.825 0-1.412-.587T10 12t.588-1.412T12 10t1.413.588T14 12t-.587 1.413T12 14m6 0q-.825 0-1.412-.587T16 12t.588-1.412T18 10t1.413.588T20 12t-.587 1.413T18 14" fill=currentColor /></symbol><use href=#ai:material-symbols:more-horiz></use></svg> 更多</div></button></div></widget-layout><script type=module>class d extends HTMLElement{constructor(){if(super(),"true"!==this.dataset.isCollapsed)return;const e=this.dataset.id,t=this.querySelector(".expand-btn"),s=this.querySelector(`#${e}`);t.addEventListener("click",(()=>{s.classList.remove("collapsed"),t.classList.add("hidden")}))}}customElements.define("widget-layout",d)</script><widget-layout class="pb-4 card-base onload-animation" data-astro-cid-ucso7hve=true data-id=tags data-is-collapsed=false style=animation-delay:.2s;--collapsedHeight:7.5rem><div class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 before:h-4 before:left-[-16px] before:top-[5.5px] dark:text-neutral-100 mb-2 ml-8 mt-4 relative text-lg text-neutral-900" style=--collapsedHeight:7.5rem data-astro-cid-ucso7hve>标签</div><div class="px-4 collapse-wrapper overflow-hidden" style=--collapsedHeight:7.5rem data-astro-cid-ucso7hve id=tags><div class="flex gap-2 flex-wrap"><a href=/archive/tag/AI/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the AI tag">AI </a><a href=/archive/tag/Blogging/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Blogging tag">Blogging </a><a href=/archive/tag/caddy/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the caddy tag">caddy </a><a href=/archive/tag/Customization/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Customization tag">Customization </a><a href=/archive/tag/Demo/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Demo tag">Demo </a><a href=/archive/tag/Docker/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Docker tag">Docker </a><a href=/archive/tag/Example/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Example tag">Example </a><a href=/archive/tag/Fuwari/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Fuwari tag">Fuwari </a><a href="/archive/tag/Github Action/" class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Github Action tag">Github Action </a><a href=/archive/tag/hello-world/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the hello-world tag">hello-world </a><a href=/archive/tag/Markdown/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Markdown tag">Markdown </a><a href=/archive/tag/nginx/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the nginx tag">nginx </a><a href=/archive/tag/Video/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the Video tag">Video </a><a href=/archive/tag/yolov10/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the yolov10 tag">yolov10 </a><a href=/archive/tag/反向代理/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the 反向代理 tag">反向代理 </a><a href=/archive/tag/域名/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the 域名 tag">域名 </a><a href=/archive/tag/静态博客/ class="text-sm rounded-lg btn-regular h-8 px-3" aria-label="View all posts with the 静态博客 tag">静态博客</a></div></div></widget-layout></div></div><main class="col-span-2 lg:col-span-1 overflow-hidden transition-swup-fade" id=swup-container><div class=onload-animation id=content-wrapper><div class="transition flex flex-col bg-[var(--card-bg)] mb-4 md:bg-transparent md:gap-4 md:py-0 py-1 rounded-[var(--radius-large)]"><div class="flex w-full card-base flex-col-reverse md:flex-col onload-animation overflow-hidden relative rounded-[var(--radius-large)]" style="animation-delay:calc(var(--content-delay) + 0ms);--coverWidth:28%" data-astro-cid-iyiqi2so><div class="w-full relative md:pl-9 md:pr-2 md:pt-7 pb-6 pl-6 pr-6 pt-6 md:w-[calc(100%_-_var(--coverWidth)_-_12px)]" style=--coverWidth:28% data-astro-cid-iyiqi2so><a href=/posts/yolov10s/yolov10s/ class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 active:text-[var(--title-active)] before:h-5 before:hidden before:left-[18px] before:top-[35px] block dark:active:text-[var(--title-active)] dark:hover:text-[var(--primary)] group hover:text-[var(--primary)] mb-3 md:before:block text-3xl text-90 w-full" data-astro-cid-iyiqi2so style=--coverWidth:28%>yolov10模型Docker训练环境搭建 <svg class="absolute text-[2rem] text-[var(--primary)] translate-y-0.5 inline md:hidden" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg> <svg class="transition text-[var(--primary)] -translate-x-1 absolute group-hover:opacity-100 group-hover:translate-x-0 hidden md:inline opacity-0 text-[2rem] translate-y-0.5" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a><div class="flex items-center dark:text-neutral-400 flex-wrap gap-4 gap-x-4 gap-y-2 mb-4 text-neutral-500"><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:calendar-today-outline-rounded height=1em width=1em><symbol id=ai:material-symbols:calendar-today-outline-rounded viewBox="0 0 24 24"><path d="M5 22q-.825 0-1.412-.587T3 20V6q0-.825.588-1.412T5 4h1V3q0-.425.288-.712T7 2t.713.288T8 3v1h8V3q0-.425.288-.712T17 2t.713.288T18 3v1h1q.825 0 1.413.588T21 6v14q0 .825-.587 1.413T19 22zm0-2h14V10H5zM5 8h14V6H5zm0 0V6z" fill=currentColor /></symbol><use href=#ai:material-symbols:calendar-today-outline-rounded></use></svg></div><span class="text-sm text-50 font-medium">2025-04-17</span></div><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:book-2-outline-rounded height=1em width=1em><symbol id=ai:material-symbols:book-2-outline-rounded viewBox="0 0 24 24"><path d="M6 15.325q.35-.175.725-.25T7.5 15H8V4h-.5q-.625 0-1.062.438T6 5.5zM10 15h8V4h-8zm-4 .325V4zM7.5 22q-1.45 0-2.475-1.025T4 18.5v-13q0-1.45 1.025-2.475T7.5 2H18q.825 0 1.413.587T20 4v12.525q0 .2-.162.363t-.588.362q-.35.175-.55.5t-.2.75t.2.763t.55.487t.55.413t.2.562v.25q0 .425-.288.725T19 22zm0-2h9.325q-.15-.35-.237-.712T16.5 18.5q0-.4.075-.775t.25-.725H7.5q-.65 0-1.075.438T6 18.5q0 .65.425 1.075T7.5 20" fill=currentColor /></symbol><use href=#ai:material-symbols:book-2-outline-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><a href=/archive/category/人工智能/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts in the 人工智能 category">人工智能</a></div></div><div class="md:flex hidden items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:tag-rounded height=1em width=1em><symbol id=ai:material-symbols:tag-rounded viewBox="0 0 24 24"><path d="m9 16l-.825 3.275q-.075.325-.325.525t-.6.2q-.475 0-.775-.375T6.3 18.8L7 16H4.275q-.5 0-.8-.387T3.3 14.75q.075-.35.35-.55t.625-.2H7.5l1-4H5.775q-.5 0-.8-.387T4.8 8.75q.075-.35.35-.55t.625-.2H9l.825-3.275Q9.9 4.4 10.15 4.2t.6-.2q.475 0 .775.375t.175.825L11 8h4l.825-3.275q.075-.325.325-.525t.6-.2q.475 0 .775.375t.175.825L17 8h2.725q.5 0 .8.387t.175.863q-.075.35-.35.55t-.625.2H16.5l-1 4h2.725q.5 0 .8.388t.175.862q-.075.35-.35.55t-.625.2H15l-.825 3.275q-.075.325-.325.525t-.6.2q-.475 0-.775-.375T12.3 18.8L13 16zm.5-2h4l1-4h-4z" fill=currentColor /></symbol><use href=#ai:material-symbols:tag-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><div class="text-sm mx-1.5 text-[var(--meta-divider)] hidden">/</div><a href=/archive/tag/AI/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the AI tag">AI</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/yolov10/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the yolov10 tag">yolov10</a></div></div></div><div class="transition mb-3.5 pr-4 text-75" style=--coverWidth:28% data-astro-cid-iyiqi2so>使用Docker容器化搭建yolov10训练环境</div><div class="transition text-sm flex dark:text-white/30 gap-4 text-black/30" style=--coverWidth:28% data-astro-cid-iyiqi2so><div style=--coverWidth:28% data-astro-cid-iyiqi2so>840 字</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>|</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>4 分钟</div></div></div><a href=/posts/yolov10s/yolov10s/ class="relative overflow-hidden active:scale-95 group rounded-xl -mb-2 max-h-[20vh] md:absolute md:bottom-3 md:max-h-none md:mb-0 md:mt-0 md:mx-0 md:right-3 md:top-3 md:w-[var(--coverWidth)] mt-4 mx-4" aria-label=yolov10模型Docker训练环境搭建 data-astro-cid-iyiqi2so style=--coverWidth:28%><div class="transition absolute pointer-events-none group-active:bg-black/50 group-hover:bg-black/30 h-full w-full z-10" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex items-center justify-center absolute h-full pointer-events-none w-full z-20" style=--coverWidth:28% data-astro-cid-iyiqi2so><svg class="transition group-hover:scale-100 group-hover:opacity-100 opacity-0 text-5xl text-white scale-50" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></div><div class="w-full h-full overflow-hidden relative"><div class="transition absolute pointer-events-none bg-opacity-50 dark:bg-black/10 inset-0"></div><img src=/_astro/labels.BB9ffaBa_ZDI0eb.webp style=object-position:center alt="Cover Image of the Post" class="w-full h-full object-cover" decoding=async height=1600 loading=lazy width=1600></div></a></div><div class="transition border-dashed border-black/10 border-t-[1px] dark:border-white/[0.15] last:border-t-0 md:hidden mx-6" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex w-full card-base flex-col-reverse md:flex-col onload-animation overflow-hidden relative rounded-[var(--radius-large)]" style="animation-delay:calc(var(--content-delay) + 50ms);--coverWidth:28%" data-astro-cid-iyiqi2so><div class="w-full relative md:pl-9 md:pr-2 md:pt-7 pb-6 pl-6 pr-6 pt-6 md:w-[calc(100%_-_52px_-_12px)]" style=--coverWidth:28% data-astro-cid-iyiqi2so><a href=/posts/blog-net/blog-net/ class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 active:text-[var(--title-active)] before:h-5 before:hidden before:left-[18px] before:top-[35px] block dark:active:text-[var(--title-active)] dark:hover:text-[var(--primary)] group hover:text-[var(--primary)] mb-3 md:before:block text-3xl text-90 w-full" data-astro-cid-iyiqi2so style=--coverWidth:28%>AtomGit Pages 使用自定义域名 <svg class="absolute text-[2rem] text-[var(--primary)] translate-y-0.5 inline md:hidden" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg> <svg class="transition text-[var(--primary)] -translate-x-1 absolute group-hover:opacity-100 group-hover:translate-x-0 hidden md:inline opacity-0 text-[2rem] translate-y-0.5" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a><div class="flex items-center dark:text-neutral-400 flex-wrap gap-4 gap-x-4 gap-y-2 mb-4 text-neutral-500"><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:calendar-today-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:calendar-today-outline-rounded></use></svg></div><span class="text-sm text-50 font-medium">2025-03-19</span></div><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:book-2-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:book-2-outline-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><a href=/archive/category/建站/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts in the 建站 category">建站</a></div></div><div class="md:flex hidden items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:tag-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:tag-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><div class="text-sm mx-1.5 text-[var(--meta-divider)] hidden">/</div><a href=/archive/tag/静态博客/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the 静态博客 tag">静态博客</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/nginx/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the nginx tag">nginx</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/caddy/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the caddy tag">caddy</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/反向代理/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the 反向代理 tag">反向代理</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/域名/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the 域名 tag">域名</a></div></div></div><div class="transition mb-3.5 pr-4 text-75" style=--coverWidth:28% data-astro-cid-iyiqi2so>采用nginx与caddy反向代理，为AtomGit Pages设置自定义域名</div><div class="transition text-sm flex dark:text-white/30 gap-4 text-black/30" style=--coverWidth:28% data-astro-cid-iyiqi2so><div style=--coverWidth:28% data-astro-cid-iyiqi2so>235 字</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>|</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>1 分钟</div></div></div><a href=/posts/blog-net/blog-net/ class="absolute rounded-xl !hidden active:bg-[var(--enter-btn-bg-active)] active:scale-95 bg-[var(--enter-btn-bg)] bottom-3 btn-regular hover:bg-[var(--enter-btn-bg-hover)] md:!flex right-3 top-3 w-[3.25rem]" aria-label="AtomGit Pages 使用自定义域名" data-astro-cid-iyiqi2so style=--coverWidth:28%><svg class="transition text-[var(--primary)] mx-auto text-4xl" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a></div><div class="transition border-dashed border-black/10 border-t-[1px] dark:border-white/[0.15] last:border-t-0 md:hidden mx-6" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex w-full card-base flex-col-reverse md:flex-col onload-animation overflow-hidden relative rounded-[var(--radius-large)]" style="animation-delay:calc(var(--content-delay) + 100ms);--coverWidth:28%" data-astro-cid-iyiqi2so><div class="w-full relative md:pl-9 md:pr-2 md:pt-7 pb-6 pl-6 pr-6 pt-6 md:w-[calc(100%_-_var(--coverWidth)_-_12px)]" style=--coverWidth:28% data-astro-cid-iyiqi2so><a href=/posts/onetap/ class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 active:text-[var(--title-active)] before:h-5 before:hidden before:left-[18px] before:top-[35px] block dark:active:text-[var(--title-active)] dark:hover:text-[var(--primary)] group hover:text-[var(--primary)] mb-3 md:before:block text-3xl text-90 w-full" data-astro-cid-iyiqi2so style=--coverWidth:28%>国内静态博客一键部署 <svg class="absolute text-[2rem] text-[var(--primary)] translate-y-0.5 inline md:hidden" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg> <svg class="transition text-[var(--primary)] -translate-x-1 absolute group-hover:opacity-100 group-hover:translate-x-0 hidden md:inline opacity-0 text-[2rem] translate-y-0.5" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a><div class="flex items-center dark:text-neutral-400 flex-wrap gap-4 gap-x-4 gap-y-2 mb-4 text-neutral-500"><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:calendar-today-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:calendar-today-outline-rounded></use></svg></div><span class="text-sm text-50 font-medium">2025-03-14</span></div><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:book-2-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:book-2-outline-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><a href=/archive/category/建站/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts in the 建站 category">建站</a></div></div><div class="md:flex hidden items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:tag-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:tag-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><div class="text-sm mx-1.5 text-[var(--meta-divider)] hidden">/</div><a href=/archive/tag/静态博客/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the 静态博客 tag">静态博客</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href="/archive/tag/Github Action/" class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Github Action tag">Github Action</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Fuwari/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Fuwari tag">Fuwari</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Docker/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Docker tag">Docker</a></div></div></div><div class="transition mb-3.5 pr-4 text-75" style=--coverWidth:28% data-astro-cid-iyiqi2so>Docker或Github Action一键部署Fuwari静态博客</div><div class="transition text-sm flex dark:text-white/30 gap-4 text-black/30" style=--coverWidth:28% data-astro-cid-iyiqi2so><div style=--coverWidth:28% data-astro-cid-iyiqi2so>777 字</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>|</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>4 分钟</div></div></div><a href=/posts/onetap/ class="relative overflow-hidden active:scale-95 group rounded-xl -mb-2 max-h-[20vh] md:absolute md:bottom-3 md:max-h-none md:mb-0 md:mt-0 md:mx-0 md:right-3 md:top-3 md:w-[var(--coverWidth)] mt-4 mx-4" aria-label=国内静态博客一键部署 data-astro-cid-iyiqi2so style=--coverWidth:28%><div class="transition absolute pointer-events-none group-active:bg-black/50 group-hover:bg-black/30 h-full w-full z-10" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex items-center justify-center absolute h-full pointer-events-none w-full z-20" style=--coverWidth:28% data-astro-cid-iyiqi2so><svg class="transition group-hover:scale-100 group-hover:opacity-100 opacity-0 text-5xl text-white scale-50" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></div><div class="w-full h-full overflow-hidden relative"><div class="transition absolute pointer-events-none bg-opacity-50 dark:bg-black/10 inset-0"></div><img src=/_astro/1.BG4PhYeN_ZVWgJe.webp style=object-position:center alt="Cover Image of the Post" class="w-full h-full object-cover" decoding=async height=929 loading=lazy width=1920></div></a></div><div class="transition border-dashed border-black/10 border-t-[1px] dark:border-white/[0.15] last:border-t-0 md:hidden mx-6" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex w-full card-base flex-col-reverse md:flex-col onload-animation overflow-hidden relative rounded-[var(--radius-large)]" style="animation-delay:calc(var(--content-delay) + 150ms);--coverWidth:28%" data-astro-cid-iyiqi2so><div class="w-full relative md:pl-9 md:pr-2 md:pt-7 pb-6 pl-6 pr-6 pt-6 md:w-[calc(100%_-_var(--coverWidth)_-_12px)]" style=--coverWidth:28% data-astro-cid-iyiqi2so><a href=/posts/blog-guide/ class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 active:text-[var(--title-active)] before:h-5 before:hidden before:left-[18px] before:top-[35px] block dark:active:text-[var(--title-active)] dark:hover:text-[var(--primary)] group hover:text-[var(--primary)] mb-3 md:before:block text-3xl text-90 w-full" data-astro-cid-iyiqi2so style=--coverWidth:28%>国内自动化静态博客搭建 <svg class="absolute text-[2rem] text-[var(--primary)] translate-y-0.5 inline md:hidden" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg> <svg class="transition text-[var(--primary)] -translate-x-1 absolute group-hover:opacity-100 group-hover:translate-x-0 hidden md:inline opacity-0 text-[2rem] translate-y-0.5" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a><div class="flex items-center dark:text-neutral-400 flex-wrap gap-4 gap-x-4 gap-y-2 mb-4 text-neutral-500"><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:calendar-today-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:calendar-today-outline-rounded></use></svg></div><span class="text-sm text-50 font-medium">2025-03-14</span></div><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:book-2-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:book-2-outline-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><a href=/archive/category/建站/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts in the 建站 category">建站</a></div></div><div class="md:flex hidden items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:tag-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:tag-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><div class="text-sm mx-1.5 text-[var(--meta-divider)] hidden">/</div><a href=/archive/tag/静态博客/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the 静态博客 tag">静态博客</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href="/archive/tag/Github Action/" class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Github Action tag">Github Action</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Fuwari/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Fuwari tag">Fuwari</a></div></div></div><div class="transition mb-3.5 pr-4 text-75" style=--coverWidth:28% data-astro-cid-iyiqi2so>采用Github Action向AtomGit部署Fuwari静态博客</div><div class="transition text-sm flex dark:text-white/30 gap-4 text-black/30" style=--coverWidth:28% data-astro-cid-iyiqi2so><div style=--coverWidth:28% data-astro-cid-iyiqi2so>1382 字</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>|</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>7 分钟</div></div></div><a href=/posts/blog-guide/ class="relative overflow-hidden active:scale-95 group rounded-xl -mb-2 max-h-[20vh] md:absolute md:bottom-3 md:max-h-none md:mb-0 md:mt-0 md:mx-0 md:right-3 md:top-3 md:w-[var(--coverWidth)] mt-4 mx-4" aria-label=国内自动化静态博客搭建 data-astro-cid-iyiqi2so style=--coverWidth:28%><div class="transition absolute pointer-events-none group-active:bg-black/50 group-hover:bg-black/30 h-full w-full z-10" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex items-center justify-center absolute h-full pointer-events-none w-full z-20" style=--coverWidth:28% data-astro-cid-iyiqi2so><svg class="transition group-hover:scale-100 group-hover:opacity-100 opacity-0 text-5xl text-white scale-50" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></div><div class="w-full h-full overflow-hidden relative"><div class="transition absolute pointer-events-none bg-opacity-50 dark:bg-black/10 inset-0"></div><img src=/_astro/1.BG4PhYeN_ZVWgJe.webp style=object-position:center alt="Cover Image of the Post" class="w-full h-full object-cover" decoding=async height=929 loading=lazy width=1920></div></a></div><div class="transition border-dashed border-black/10 border-t-[1px] dark:border-white/[0.15] last:border-t-0 md:hidden mx-6" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex w-full card-base flex-col-reverse md:flex-col onload-animation overflow-hidden relative rounded-[var(--radius-large)]" style="animation-delay:calc(var(--content-delay) + 200ms);--coverWidth:28%" data-astro-cid-iyiqi2so><div class="w-full relative md:pl-9 md:pr-2 md:pt-7 pb-6 pl-6 pr-6 pt-6 md:w-[calc(100%_-_52px_-_12px)]" style=--coverWidth:28% data-astro-cid-iyiqi2so><a href=/posts/hello-world/ class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 active:text-[var(--title-active)] before:h-5 before:hidden before:left-[18px] before:top-[35px] block dark:active:text-[var(--title-active)] dark:hover:text-[var(--primary)] group hover:text-[var(--primary)] mb-3 md:before:block text-3xl text-90 w-full" data-astro-cid-iyiqi2so style=--coverWidth:28%>hello-world <svg class="absolute text-[2rem] text-[var(--primary)] translate-y-0.5 inline md:hidden" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg> <svg class="transition text-[var(--primary)] -translate-x-1 absolute group-hover:opacity-100 group-hover:translate-x-0 hidden md:inline opacity-0 text-[2rem] translate-y-0.5" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a><div class="flex items-center dark:text-neutral-400 flex-wrap gap-4 gap-x-4 gap-y-2 mb-4 text-neutral-500"><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:calendar-today-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:calendar-today-outline-rounded></use></svg></div><span class="text-sm text-50 font-medium">2025-03-13</span></div><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:book-2-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:book-2-outline-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><a href=/archive/category/hello-world/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts in the hello-world category">hello-world</a></div></div><div class="md:flex hidden items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:tag-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:tag-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><div class="text-sm mx-1.5 text-[var(--meta-divider)] hidden">/</div><a href=/archive/tag/hello-world/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the hello-world tag">hello-world</a></div></div></div><div class="transition mb-3.5 pr-4 text-75" style=--coverWidth:28% data-astro-cid-iyiqi2so>你好世界</div><div class="transition text-sm flex dark:text-white/30 gap-4 text-black/30" style=--coverWidth:28% data-astro-cid-iyiqi2so><div style=--coverWidth:28% data-astro-cid-iyiqi2so>29 字</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>|</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>1 分钟</div></div></div><a href=/posts/hello-world/ class="absolute rounded-xl !hidden active:bg-[var(--enter-btn-bg-active)] active:scale-95 bg-[var(--enter-btn-bg)] bottom-3 btn-regular hover:bg-[var(--enter-btn-bg-hover)] md:!flex right-3 top-3 w-[3.25rem]" aria-label=hello-world data-astro-cid-iyiqi2so style=--coverWidth:28%><svg class="transition text-[var(--primary)] mx-auto text-4xl" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a></div><div class="transition border-dashed border-black/10 border-t-[1px] dark:border-white/[0.15] last:border-t-0 md:hidden mx-6" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex w-full card-base flex-col-reverse md:flex-col onload-animation overflow-hidden relative rounded-[var(--radius-large)]" style="animation-delay:calc(var(--content-delay) + 250ms);--coverWidth:28%" data-astro-cid-iyiqi2so><div class="w-full relative md:pl-9 md:pr-2 md:pt-7 pb-6 pl-6 pr-6 pt-6 md:w-[calc(100%_-_52px_-_12px)]" style=--coverWidth:28% data-astro-cid-iyiqi2so><a href=/posts/markdown-extended/ class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 active:text-[var(--title-active)] before:h-5 before:hidden before:left-[18px] before:top-[35px] block dark:active:text-[var(--title-active)] dark:hover:text-[var(--primary)] group hover:text-[var(--primary)] mb-3 md:before:block text-3xl text-90 w-full" data-astro-cid-iyiqi2so style=--coverWidth:28%>Markdown Extended Features <svg class="absolute text-[2rem] text-[var(--primary)] translate-y-0.5 inline md:hidden" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg> <svg class="transition text-[var(--primary)] -translate-x-1 absolute group-hover:opacity-100 group-hover:translate-x-0 hidden md:inline opacity-0 text-[2rem] translate-y-0.5" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a><div class="flex items-center dark:text-neutral-400 flex-wrap gap-4 gap-x-4 gap-y-2 mb-4 text-neutral-500"><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:calendar-today-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:calendar-today-outline-rounded></use></svg></div><span class="text-sm text-50 font-medium">2024-05-01</span></div><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:book-2-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:book-2-outline-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><a href=/archive/category/Examples/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts in the Examples category">Examples</a></div></div><div class="md:flex hidden items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:tag-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:tag-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><div class="text-sm mx-1.5 text-[var(--meta-divider)] hidden">/</div><a href=/archive/tag/Demo/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Demo tag">Demo</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Example/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Example tag">Example</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Markdown/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Markdown tag">Markdown</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Fuwari/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Fuwari tag">Fuwari</a></div></div></div><div class="transition mb-3.5 pr-4 text-75" style=--coverWidth:28% data-astro-cid-iyiqi2so>Read more about Markdown features in Fuwari</div><div class="transition text-sm flex dark:text-white/30 gap-4 text-black/30" style=--coverWidth:28% data-astro-cid-iyiqi2so><div style=--coverWidth:28% data-astro-cid-iyiqi2so>156 字</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>|</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>1 分钟</div></div></div><a href=/posts/markdown-extended/ class="absolute rounded-xl !hidden active:bg-[var(--enter-btn-bg-active)] active:scale-95 bg-[var(--enter-btn-bg)] bottom-3 btn-regular hover:bg-[var(--enter-btn-bg-hover)] md:!flex right-3 top-3 w-[3.25rem]" aria-label="Markdown Extended Features" data-astro-cid-iyiqi2so style=--coverWidth:28%><svg class="transition text-[var(--primary)] mx-auto text-4xl" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a></div><div class="transition border-dashed border-black/10 border-t-[1px] dark:border-white/[0.15] last:border-t-0 md:hidden mx-6" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex w-full card-base flex-col-reverse md:flex-col onload-animation overflow-hidden relative rounded-[var(--radius-large)]" style="animation-delay:calc(var(--content-delay) + 300ms);--coverWidth:28%" data-astro-cid-iyiqi2so><div class="w-full relative md:pl-9 md:pr-2 md:pt-7 pb-6 pl-6 pr-6 pt-6 md:w-[calc(100%_-_var(--coverWidth)_-_12px)]" style=--coverWidth:28% data-astro-cid-iyiqi2so><a href=/posts/guide/ class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 active:text-[var(--title-active)] before:h-5 before:hidden before:left-[18px] before:top-[35px] block dark:active:text-[var(--title-active)] dark:hover:text-[var(--primary)] group hover:text-[var(--primary)] mb-3 md:before:block text-3xl text-90 w-full" data-astro-cid-iyiqi2so style=--coverWidth:28%>Simple Guides for Fuwari <svg class="absolute text-[2rem] text-[var(--primary)] translate-y-0.5 inline md:hidden" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg> <svg class="transition text-[var(--primary)] -translate-x-1 absolute group-hover:opacity-100 group-hover:translate-x-0 hidden md:inline opacity-0 text-[2rem] translate-y-0.5" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a><div class="flex items-center dark:text-neutral-400 flex-wrap gap-4 gap-x-4 gap-y-2 mb-4 text-neutral-500"><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:calendar-today-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:calendar-today-outline-rounded></use></svg></div><span class="text-sm text-50 font-medium">2024-04-01</span></div><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:book-2-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:book-2-outline-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><a href=/archive/category/Guides/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts in the Guides category">Guides</a></div></div><div class="md:flex hidden items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:tag-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:tag-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><div class="text-sm mx-1.5 text-[var(--meta-divider)] hidden">/</div><a href=/archive/tag/Fuwari/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Fuwari tag">Fuwari</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Blogging/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Blogging tag">Blogging</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Customization/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Customization tag">Customization</a></div></div></div><div class="transition mb-3.5 pr-4 text-75" style=--coverWidth:28% data-astro-cid-iyiqi2so>How to use this blog template.</div><div class="transition text-sm flex dark:text-white/30 gap-4 text-black/30" style=--coverWidth:28% data-astro-cid-iyiqi2so><div style=--coverWidth:28% data-astro-cid-iyiqi2so>160 字</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>|</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>1 分钟</div></div></div><a href=/posts/guide/ class="relative overflow-hidden active:scale-95 group rounded-xl -mb-2 max-h-[20vh] md:absolute md:bottom-3 md:max-h-none md:mb-0 md:mt-0 md:mx-0 md:right-3 md:top-3 md:w-[var(--coverWidth)] mt-4 mx-4" aria-label="Simple Guides for Fuwari" data-astro-cid-iyiqi2so style=--coverWidth:28%><div class="transition absolute pointer-events-none group-active:bg-black/50 group-hover:bg-black/30 h-full w-full z-10" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex items-center justify-center absolute h-full pointer-events-none w-full z-20" style=--coverWidth:28% data-astro-cid-iyiqi2so><svg class="transition group-hover:scale-100 group-hover:opacity-100 opacity-0 text-5xl text-white scale-50" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></div><div class="w-full h-full overflow-hidden relative"><div class="transition absolute pointer-events-none bg-opacity-50 dark:bg-black/10 inset-0"></div><img src=/_astro/cover.CgGywNHJ_9MQNr.webp style=object-position:center alt="Cover Image of the Post" class="w-full h-full object-cover" decoding=async height=1024 loading=lazy width=2048></div></a></div><div class="transition border-dashed border-black/10 border-t-[1px] dark:border-white/[0.15] last:border-t-0 md:hidden mx-6" style=--coverWidth:28% data-astro-cid-iyiqi2so></div><div class="flex w-full card-base flex-col-reverse md:flex-col onload-animation overflow-hidden relative rounded-[var(--radius-large)]" style="animation-delay:calc(var(--content-delay) + 350ms);--coverWidth:28%" data-astro-cid-iyiqi2so><div class="w-full relative md:pl-9 md:pr-2 md:pt-7 pb-6 pl-6 pr-6 pt-6 md:w-[calc(100%_-_52px_-_12px)]" style=--coverWidth:28% data-astro-cid-iyiqi2so><a href=/posts/markdown/ class="transition font-bold before:absolute before:bg-[var(--primary)] before:rounded-md before:w-1 active:text-[var(--title-active)] before:h-5 before:hidden before:left-[18px] before:top-[35px] block dark:active:text-[var(--title-active)] dark:hover:text-[var(--primary)] group hover:text-[var(--primary)] mb-3 md:before:block text-3xl text-90 w-full" data-astro-cid-iyiqi2so style=--coverWidth:28%>Markdown Example <svg class="absolute text-[2rem] text-[var(--primary)] translate-y-0.5 inline md:hidden" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg> <svg class="transition text-[var(--primary)] -translate-x-1 absolute group-hover:opacity-100 group-hover:translate-x-0 hidden md:inline opacity-0 text-[2rem] translate-y-0.5" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a><div class="flex items-center dark:text-neutral-400 flex-wrap gap-4 gap-x-4 gap-y-2 mb-4 text-neutral-500"><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:calendar-today-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:calendar-today-outline-rounded></use></svg></div><span class="text-sm text-50 font-medium">2023-10-01</span></div><div class="flex items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:book-2-outline-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:book-2-outline-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><a href=/archive/category/Examples/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts in the Examples category">Examples</a></div></div><div class="md:flex hidden items-center"><div class=meta-icon><svg class=text-xl data-icon=material-symbols:tag-rounded height=1em width=1em viewBox="0 0 24 24"><use href=#ai:material-symbols:tag-rounded></use></svg></div><div class="flex items-center flex-row flex-nowrap"><div class="text-sm mx-1.5 text-[var(--meta-divider)] hidden">/</div><a href=/archive/tag/Markdown/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Markdown tag">Markdown</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Blogging/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Blogging tag">Blogging</a><div class="text-sm mx-1.5 text-[var(--meta-divider)]">/</div><a href=/archive/tag/Demo/ class="transition text-sm text-50 dark:hover:text-[var(--primary)] font-medium hover:text-[var(--primary)] link-lg whitespace-nowrap" aria-label="View all posts with the Demo tag">Demo</a></div></div></div><div class="transition mb-3.5 pr-4 text-75" style=--coverWidth:28% data-astro-cid-iyiqi2so>A simple example of a Markdown blog post.</div><div class="transition text-sm flex dark:text-white/30 gap-4 text-black/30" style=--coverWidth:28% data-astro-cid-iyiqi2so><div style=--coverWidth:28% data-astro-cid-iyiqi2so>444 字</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>|</div><div style=--coverWidth:28% data-astro-cid-iyiqi2so>2 分钟</div></div></div><a href=/posts/markdown/ class="absolute rounded-xl !hidden active:bg-[var(--enter-btn-bg-active)] active:scale-95 bg-[var(--enter-btn-bg)] bottom-3 btn-regular hover:bg-[var(--enter-btn-bg-hover)] md:!flex right-3 top-3 w-[3.25rem]" aria-label="Markdown Example" data-astro-cid-iyiqi2so style=--coverWidth:28%><svg class="transition text-[var(--primary)] mx-auto text-4xl" data-icon=material-symbols:chevron-right-rounded height=1em width=1em viewBox="0 0 24 24" data-astro-cid-iyiqi2so=true><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a></div><div class="transition border-dashed border-black/10 border-t-[1px] dark:border-white/[0.15] last:border-t-0 md:hidden mx-6" style=--coverWidth:28% data-astro-cid-iyiqi2so></div></div><div class="flex flex-row gap-3 justify-center mx-auto onload-animation" style="animation-delay:calc(var(--content-delay) + 400ms)"><a href=/ class="h-11 rounded-lg w-11 btn-card overflow-hidden text-[var(--primary)] disabled"><svg class=text-[1.75rem] data-icon=material-symbols:chevron-left-rounded height=1em width=1em><symbol id=ai:material-symbols:chevron-left-rounded viewBox="0 0 24 24"><path d="m10.8 12l3.9 3.9q.275.275.275.7t-.275.7t-.7.275t-.7-.275l-4.6-4.6q-.15-.15-.212-.325T8.425 12t.063-.375t.212-.325l4.6-4.6q.275-.275.7-.275t.7.275t.275.7t-.275.7z" fill=currentColor /></symbol><use href=#ai:material-symbols:chevron-left-rounded></use></svg></a><div class="flex items-center flex-row bg-[var(--card-bg)] dark:text-neutral-300 font-bold rounded-lg text-neutral-700"><div class="flex items-center rounded-lg font-bold justify-center bg-[var(--primary)] dark:text-black/70 h-11 text-white w-11">1</div><a href=/2/ class="h-11 rounded-lg w-11 btn-card overflow-hidden active:scale-[0.85]" aria-label="Page 2">2</a></div><a href=/2/ class="h-11 rounded-lg w-11 btn-card overflow-hidden text-[var(--primary)]" aria-label="Next Page"><svg class=text-[1.75rem] data-icon=material-symbols:chevron-right-rounded height=1em width=1em><symbol id=ai:material-symbols:chevron-right-rounded viewBox="0 0 24 24"><path d="M12.6 12L8.7 8.1q-.275-.275-.275-.7t.275-.7t.7-.275t.7.275l4.6 4.6q.15.15.213.325t.062.375t-.062.375t-.213.325l-4.6 4.6q-.275.275-.7.275t-.7-.275t-.275-.7t.275-.7z" fill=currentColor /></symbol><use href=#ai:material-symbols:chevron-right-rounded></use></svg></a></div><div class="col-span-2 onload-animation footer hidden lg:block"><div class="transition border-dashed border-black/10 border-t dark:border-white/15 mx-32 my-10"></div><div class="transition flex items-center justify-center border-[oklch(85%_0.01_var(--hue))] border-dashed dark:border-white/15 flex-col mb-12 px-6 rounded-2xl"><div class="transition text-sm text-50 text-center">&copy; <span id=copyright-year>2025</span> Lorenzo Feng. All Rights Reserved. / <a href=/rss.xml class="transition font-medium link text-[var(--primary)]" target=_blank>RSS</a> / <a href=/sitemap-index.xml class="transition font-medium link text-[var(--primary)]" target=_blank>Sitemap</a><br>Powered by <a href=https://astro.build class="transition font-medium link text-[var(--primary)]" target=_blank>Astro</a> & <a href=https://github.com/saicaca/fuwari class="transition font-medium link text-[var(--primary)]" target=_blank>Fuwari</a><br><a href=https://beian.miit.gov.cn/ class="transition font-medium link text-[var(--primary)]" target=_blank +>苏ICP备2025169906号-1</a></div><script>function runtime(){const e=new Date("03/12/2025 08:00:00"),t=new Date-e,n=Math.floor(t/1e3),o=Math.floor(n/86400),r=Math.floor(n%86400/3600),a=Math.floor(n%3600/60),i=n%60;document.getElementById("runningtime").innerHTML=`⭐本站已运行: ${o}天${r}小时${a}分${i}秒 ☁️`}setInterval(runtime,1e3)</script><div class="transition text-sm text-50 text-center hidden md:block"><p id=runningtime></p></div></div></div></div></main><div class="col-span-2 onload-animation footer block lg:hidden"><div class="transition border-dashed border-black/10 border-t dark:border-white/15 mx-32 my-10"></div><div class="transition flex items-center justify-center border-[oklch(85%_0.01_var(--hue))] border-dashed dark:border-white/15 flex-col mb-12 px-6 rounded-2xl"><div class="transition text-sm text-50 text-center">&copy; <span id=copyright-year>2025</span> Lorenzo Feng. All Rights Reserved. / <a href=/rss.xml class="transition font-medium link text-[var(--primary)]" target=_blank>RSS</a> / <a href=/sitemap-index.xml class="transition font-medium link text-[var(--primary)]" target=_blank>Sitemap</a><br>Powered by <a href=https://astro.build class="transition font-medium link text-[var(--primary)]" target=_blank>Astro</a> & <a href=https://github.com/saicaca/fuwari class="transition font-medium link text-[var(--primary)]" target=_blank>Fuwari</a><br><a href=https://beian.miit.gov.cn/ class="transition font-medium link text-[var(--primary)]" target=_blank +>苏ICP备2025169906号-1</a></div><script>function runtime(){const e=new Date("03/12/2025 08:00:00"),t=new Date-e,n=Math.floor(t/1e3),o=Math.floor(n/86400),r=Math.floor(n%86400/3600),a=Math.floor(n%3600/60),i=n%60;document.getElementById("runningtime").innerHTML=`⭐本站已运行: ${o}天${r}小时${a}分${i}秒 ☁️`}setInterval(runtime,1e3)</script><div class="transition text-sm text-50 text-center hidden md:block"><p id=runningtime></p></div></div></div></div><div class="back-to-top-wrapper hidden lg:block" data-astro-cid-eymb5ayk><div class="transition flex items-center rounded-2xl back-to-top-btn hide overflow-hidden" id=back-to-top-btn data-astro-cid-eymb5ayk onclick=backToTop()><button class="btn-card h-[3.75rem] w-[3.75rem]" aria-label="Back to Top" data-astro-cid-eymb5ayk><svg class=mx-auto data-icon=material-symbols:keyboard-arrow-up-rounded height=1em width=1em data-astro-cid-eymb5ayk=true><symbol id=ai:material-symbols:keyboard-arrow-up-rounded viewBox="0 0 24 24"><path d="m12 10.8l-3.9 3.9q-.275.275-.7.275t-.7-.275t-.275-.7t.275-.7l4.6-4.6q.3-.3.7-.3t.7.3l4.6 4.6q.275.275.275.7t-.275.7t-.7.275t-.7-.275z" fill=currentColor /></symbol><use href=#ai:material-symbols:keyboard-arrow-up-rounded></use></svg></button></div></div><script>function backToTop(){window.scroll({top:0,behavior:"smooth"})}</script></div></div><div class="w-full absolute 2xl:block hidden z-0"><div class="relative mx-auto max-w-[var(--page-width)]"><div class="transition flex items-center absolute -right-[var(--toc-width)] hidden lg:block toc-hide top-0 w-[var(--toc-width)]" id=toc-wrapper><div class="fixed h-[calc(100vh_-_20rem)] hide-scrollbar overflow-x-hidden overflow-y-scroll top-14 w-[var(--toc-width)]" id=toc-inner-wrapper><div class="w-full h-full transition-swup-fade" id=toc><div class="w-full h-8"></div><table-of-contents class=group><div class="absolute hidden -z-10 bg-[var(--toc-btn-hover)] border-2 border-[var(--toc-btn-hover)] border-dashed group-hover:bg-transparent group-hover:border-[var(--toc-btn-active)] left-0 right-0 rounded-xl transition-all" id=active-indicator></div></table-of-contents><script type=module>class h extends HTMLElement{tocEl=null;visibleClass="visible";observer;anchorNavTarget=null;headingIdxMap=new Map;headings=[];sections=[];tocEntries=[];active=[];activeIndicator=null;constructor(){super(),this.observer=new IntersectionObserver(this.markVisibleSection,{threshold:0})}markVisibleSection=t=>{t.forEach((t=>{const e=t.target.children[0]?.getAttribute("id"),i=e?this.headingIdxMap.get(e):void 0;null!=i&&(this.active[i]=t.isIntersecting),t.isIntersecting&&this.anchorNavTarget==t.target.firstChild&&(this.anchorNavTarget=null)})),this.active.includes(!0)||this.fallback(),this.update()};toggleActiveHeading=()=>{let t=this.active.length-1,e=this.active.length-1,i=0;for(;t>=0&&!this.active[t];)this.tocEntries[t].classList.remove(this.visibleClass),t--;for(;t>=0&&this.active[t];)this.tocEntries[t].classList.add(this.visibleClass),e=Math.min(e,t),i=Math.max(i,t),t--;for(;t>=0;)this.tocEntries[t].classList.remove(this.visibleClass),t--;let n=this.tocEl?.getBoundingClientRect().top||0,s=this.tocEl?.scrollTop||0,o=this.tocEntries[e].getBoundingClientRect().top-n+s,c=this.tocEntries[i].getBoundingClientRect().bottom-n+s;this.activeIndicator?.setAttribute("style",`top: ${o}px; height: ${c-o}px`)};scrollToActiveHeading=()=>{if(this.anchorNavTarget||!this.tocEl)return;const t=document.querySelectorAll(`#toc .${this.visibleClass}`);if(!t.length)return;const e=t[0],i=t[t.length-1],n=this.tocEl.clientHeight;let s;s=i.getBoundingClientRect().bottom-e.getBoundingClientRect().top<.9*n?e.offsetTop-32:i.offsetTop-.8*n,this.tocEl.scrollTo({top:s,left:0,behavior:"smooth"})};update=()=>{requestAnimationFrame((()=>{this.toggleActiveHeading(),this.scrollToActiveHeading()}))};fallback=()=>{if(this.sections.length)for(let t=0;t<this.sections.length;t++){let e=this.sections[t].getBoundingClientRect().top,i=this.sections[t].getBoundingClientRect().bottom;if(this.isInRange(e,0,window.innerHeight)||this.isInRange(i,0,window.innerHeight)||e<0&&i>window.innerHeight)this.markActiveHeading(t);else if(e>window.innerHeight)break}};markActiveHeading=t=>{this.active[t]=!0};handleAnchorClick=t=>{const e=t.composedPath().find((t=>t instanceof HTMLAnchorElement));if(e){const t=decodeURIComponent(e.hash?.substring(1)),i=this.headingIdxMap.get(t);this.anchorNavTarget=void 0!==i?this.headings[i]:null}};isInRange(t,e,i){return e<t&&t<i}connectedCallback(){const t=document.querySelector(".prose");t?t.addEventListener("animationend",(()=>{this.init()}),{once:!0}):console.warn("Animation element not found")}init(){if(this.tocEl=document.getElementById("toc-inner-wrapper"),this.tocEl&&(this.tocEl.addEventListener("click",this.handleAnchorClick,{capture:!0}),this.activeIndicator=document.getElementById("active-indicator"),this.tocEntries=Array.from(document.querySelectorAll("#toc a[href^='#']")),0!==this.tocEntries.length)){this.sections=new Array(this.tocEntries.length),this.headings=new Array(this.tocEntries.length);for(let t=0;t<this.tocEntries.length;t++){const e=decodeURIComponent(this.tocEntries[t].hash?.substring(1)),i=document.getElementById(e),n=i?.parentElement;i instanceof HTMLElement&&n instanceof HTMLElement&&(this.headings[t]=i,this.sections[t]=n,this.headingIdxMap.set(e,t))}this.active=new Array(this.tocEntries.length).fill(!1),this.sections.forEach((t=>this.observer.observe(t))),this.fallback(),this.update()}}disconnectedCallback(){this.sections.forEach((t=>this.observer.unobserve(t))),this.observer.disconnect(),this.tocEl?.removeEventListener("click",this.handleAnchorClick)}}customElements.define("table-of-contents",h)</script><div class="w-full h-8"></div></div></div></div><!-- #toc needs to exist for Swup to work normally --></div></div><div class="h-[300vh] hidden" style=--bannerOffset:15vh;--banner-height-home:65vh;--banner-height:35vh;--configHue:250;--page-width:75rem id=page-height-extend data-astro-cid-sckkx6r4></div><script type=module src=/_astro/Layout.astro_astro_type_script_index_0_lang.Dfc1V895.js></script><script type=module src=/_astro/Layout.astro_astro_type_script_index_1_lang.DMNJ5w06.js></script></body></html>